草庐IT

MIME 类型

全部标签

go - go中的二维 slice 类型转换

我不得不为[]string定义一个特定的类型,因为我为strSlice类型实现了一个自定义的yaml解析器。现在我需要将[]strSlice转换回[][]string但go编译器1.7.1拒绝它作为错误。typestrSlice[]stringvarx1[]strSlicevarx2[][]string...x2=[][]string(x1)如何执行转换操作? 最佳答案 您正在使用命名类型的字符串slice。您需要先将x1中的每个条目转换回[]string:typestrSlice[]stringvarx1[]strSlicevar

go - 如何使用Golang获取与另一个变量相同类型的新变量

我该怎么做?我想要一个函数返回一个与其参数之一具有相同类型的变量。我需要类似下面的东西:typeWhateverstruct{Titlestring}hey:=Whatever{Title:"YAY"}thetype:=reflect.ValueOf(hey).Kind()//ThisdoesnotworkBB:=new(thetype) 最佳答案 如果你想从reflect.Type中创建一个新值,你可以使用reflect.New来实现:thetype:=reflect.TypeOf(hey)BB:=reflect.New(thet

go - 为什么返回一个实现了error接口(interface)的类型会自动调用Error()方法?

链接:https://play.golang.org/p/z50pUnAe4qpackagemainimport("fmt""time")typeMyErrorstruct{Whentime.TimeWhatstring}func(e*MyError)Error()string{returnfmt.Sprintf("at%v,%s",e.When,e.What)}funcrun()error{return&MyError{time.Now(),"itdidn'twork",}}funcmain(){iferr:=run();err!=nil{fmt.Println(err)}}我知道内

json - 如何在 Golang 中根据对象类型解码 JSON

如果您有以下JSON结构:[{"type":"home","name":"house#1",...somenumberofpropertiesforhome#1},{"type":"bike","name":"trekbike#1",...somenumberofpropertiesforbike#1},{"type":"home","name":"house#2",...somenumberofpropertiesforhome#2}]在解码对象之前,如何在不知道每种类型是什么的情况下在Golang中将其解码为结构。看起来您必须执行两次这种解码。另外据我所知,我可能应该使用RawMe

go - 预先声明的类型可以在 Go 中实现接口(interface)吗?

假设我有一个接口(interface)Key,它有一个方法Hash()int,我想在Go的集合结构中使用它。我希望能够在我的集合中做一些事情,例如(c*Collection)Set(keyKey,valueValue)。我希望我的集合能够以预先声明的类型为键,例如typeIntKeyint,这样我就可以在实现(kIntKey)Hash()整数。这是可能的,还是我需要将IntKey声明为结构? 最佳答案 任何(非内置)类型都可以满足接口(interface),因此:typeIntKeyintfunc(kIntKey)Hash()int

go - 项目之间的类型冲突

我想将特定子域使用的代码移动到它自己的项目中,这些代码将由当前所在的主代码库导入。我能够成功地将代码从子域导入到主项目中,直到我添加gorilla多路复用器代码。例如,这有效://importsandnon-relevantroutesremovedforsimplicityr:=mux.NewRouter()//Primarysiterouteshere...s:=r.Host("subdomain-regex-here").Subrouter()s.HandleFunc("/",people.Index)http.ListenAndServe("localhost:8080",r)

json - golang gin gonic 内容类型未使用 c.JSON 设置为 application/json

根据officialdocumentation,c.JSONgin-gonic应该将响应header设置为application/json,但是当我从Postman调用我的API时,响应头设置为text/plain;charset=utf-8我不明白我错过了什么,知道吗?文档:funcJSONJSONserializesthegivenstructasJSONintotheresponsebody.ItalsosetstheContent-Typeas"application/json".这是我的代码示例:funcpostLogin(c*gin.Context){varcredenti

go - 如何在golang中获取 child 的类型

我最近一直在学习Go。在下面的示例中,我得到的是a类型,而不是b。为什么?我如何获得b?//parenttypeAstruct{foostring}func(a*A)say(){//Iwantbhere,notafmt.Println(reflect.ValueOf(a).Type().String())}//childtypeBstruct{A}funcmain(){b:=new(B)b.say()} 最佳答案 你总是得到A值,因为你只有一个say()指向A结构的方法。因此,当您应用say()B结构的方法,编译器将查看B结构及其字

go - 强制 Go 类型实现接口(interface)

在Go中,你不需要声明你需要实现一个接口(interface),你只是去做(它被称为“结构化类型”,类似于动态语言中的“鸭子类型”)。如果你想强制一个类型实现一个接口(interface)怎么办(比如当你在C#或Java中“继承”一个接口(interface)时)?换句话说,如果忘记实现接口(interface)(或签名错误)是一个错误并且您想及早发现该错误怎么办。最好的方法是什么? 最佳答案 你可能做的最好的事情就是尝试将类型的实例分配给接口(interface)变量例如,您要确保类型A实现了Stringer接口(interfac

go - 在 Go 中获得不同但相似类型的类似数组行为的最佳方法?

场景:我有几个不同的客户端,每个客户端都与不同的API交互。这些客户端的数据字段是一样的:typeclientXstruct{keystringsecretstringclient*http.Client}然而,这些客户端各自有许多方法(彼此各不相同):func(c*ClientX)someMethod()(*ResponseType,error){//code}客户端的数量可能会随着时间的推移而变化,因为添加了对新API的支持,或者一些API下线了。因此,主包中的所有函数都需要模块化和适应性,以接受可变数量的客户端作为参数。解决这个问题的最佳方法是什么?我不能将客户端放在一个数组中,